package global

import (
	"context"
	"fmt"
	"sync"
)

const (
	CMDB_BLACKLIST_GETBLACKLIST_URI = "v1/cmdb-blacklist/iplist"
	CMDB_BLACKLIST_HAPROXY_NAME     = "haproxy"
	CMDB_BLACKLIST_OPENRESTY_NAME   = "openresty"
	CMDB_BLACKLIST_EBPF_NAME        = "ebpf"
)

var BlacklistTypeModes = []string{
	CMDB_BLACKLIST_HAPROXY_NAME,
	CMDB_BLACKLIST_EBPF_NAME,
	CMDB_BLACKLIST_OPENRESTY_NAME,
}
var BlacklistCronStatusMap = &sync.Map{}

func CheckConfigBlacklistStatus(ctx context.Context) (bool, error) {
	// 定义黑名单模式列表
	modes := BlacklistTypeModes

	count := 0
	var enabledNames []string

	// 从 BlacklistCronStatusMap 中读取启用状态
	for _, mode := range modes {
		if value, ok := BlacklistCronStatusMap.Load(mode); ok {
			if enabled, isBool := value.(bool); isBool && enabled {
				count++
				enabledNames = append(enabledNames, mode)
			}
		}
	}

	if count > 1 {
		return false, fmt.Errorf("只能选择一种黑名单模式，当前启用了 %d 种: %v", count, enabledNames)
	}

	// 这里如果是0表示关闭黑名单系统
	// if count == 0 {
	// 	return false, errors.New("至少需要启用一种黑名单模式")
	// }

	return true, nil
}
